//package com.techzhi.address_web.controller;
//
//import com.techzhi.addres_score.mapper.CityMapper;
//import com.techzhi.addres_score.mapper.DistrictMapper;
//import com.techzhi.addres_score.mapper.ProvinceMapper;
//import com.techzhi.addres_score.model.City;
//import com.techzhi.addres_score.model.District;
//import com.techzhi.addres_score.model.Province;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.*;
//
//@Slf4j
//@RestController
//@RequestMapping("/api/validation")
//public class DataValidationController {
//
//    @Autowired
//    private ProvinceMapper provinceMapper;
//
//    @Autowired
//    private CityMapper cityMapper;
//
//    @Autowired
//    private DistrictMapper districtMapper;
//
//    @GetMapping("/data-integrity")
//    public Map<String, Object> validateDataIntegrity() {
//        Map<String, Object> result = new HashMap<>();
//        List<String> issues = new ArrayList<>();
//
//        try {
//            // 1. 检查所有省份
//            List<Province> allProvinces = provinceMapper.selectAllOrderByCode();
//            log.info("总共有{}个省份", allProvinces.size());
//
//            // 2. 检查每个省份下的城市
//            for (Province province : allProvinces) {
//                List<City> cities = cityMapper.selectByProvinceCode(province.getCode());
//                log.info("省份[{}]下有{}个城市", province.getName(), cities.size());
//
//                if (cities.isEmpty()) {
//                    issues.add(String.format("省份[%s]下没有城市数据", province.getName()));
//                }
//
//                // 3. 检查每个城市下的区县
//                for (City city : cities) {
//                    List<District> districts = districtMapper.selectByCityCode(city.getCode());
//                    log.info("城市[{}]下有{}个区县", city.getName(), districts.size());
//
//                    if (districts.isEmpty()) {
//                        issues.add(String.format("城市[%s]下没有区县数据", city.getName()));
//                    }
//
//                    // 4. 检查区县是否属于正确的城市
//                    for (District district : districts) {
//                        if (!district.getCityCode().equals(city.getCode())) {
//                            issues.add(String.format("区县[%s]的cityCode[%s]与所属城市[%s]的code[%s]不匹配",
//                                district.getName(), district.getCityCode(), city.getName(), city.getCode()));
//                        }
//                    }
//                }
//
//                // 5. 检查城市是否属于正确的省份
//                for (City city : cities) {
//                    if (!city.getProvinceCode().equals(province.getCode())) {
//                        issues.add(String.format("城市[%s]的provinceCode[%s]与所属省份[%s]的code[%s]不匹配",
//                            city.getName(), city.getProvinceCode(), province.getName(), province.getCode()));
//                    }
//                }
//            }
//
//            // 6. 检查是否有孤立的城市（没有对应省份）
//            List<City> allCities = cityMapper.selectList(null);
//            for (City city : allCities) {
//                Province province = provinceMapper.selectByCode(city.getProvinceCode());
//                if (province == null) {
//                    issues.add(String.format("城市[%s]的省份代码[%s]在省份表中不存在",
//                        city.getName(), city.getProvinceCode()));
//                }
//            }
//
//            // 7. 检查是否有孤立的区县（没有对应城市）
//            List<District> allDistricts = districtMapper.selectList(null);
//            for (District district : allDistricts) {
//                City city = cityMapper.selectByCode(district.getCityCode());
//                if (city == null) {
//                    issues.add(String.format("区县[%s]的城市代码[%s]在城市表中不存在",
//                        district.getName(), district.getCityCode()));
//                }
//            }
//
//            result.put("success", true);
//            result.put("totalProvinces", allProvinces.size());
//            result.put("totalCities", allCities.size());
//            result.put("totalDistricts", allDistricts.size());
//            result.put("issues", issues);
//            result.put("issueCount", issues.size());
//
//            if (issues.isEmpty()) {
//                result.put("message", "数据完整性检查通过");
//            } else {
//                result.put("message", String.format("发现%d个数据完整性问题", issues.size()));
//            }
//
//        } catch (Exception e) {
//            log.error("数据完整性检查失败", e);
//            result.put("success", false);
//            result.put("message", "数据完整性检查失败: " + e.getMessage());
//        }
//
//        return result;
//    }
//
//    @GetMapping("/province/{provinceCode}/cities")
//    public Map<String, Object> getProvinceCities(@PathVariable String provinceCode) {
//        Map<String, Object> result = new HashMap<>();
//
//        try {
//            Province province = provinceMapper.selectByCode(provinceCode);
//            if (province == null) {
//                result.put("success", false);
//                result.put("message", "省份不存在");
//                return result;
//            }
//
//            List<City> cities = cityMapper.selectByProvinceCode(provinceCode);
//
//            result.put("success", true);
//            result.put("province", province);
//            result.put("cities", cities);
//            result.put("cityCount", cities.size());
//            result.put("message", String.format("省份[%s]下有%d个城市", province.getName(), cities.size()));
//
//        } catch (Exception e) {
//            log.error("获取省份城市列表失败", e);
//            result.put("success", false);
//            result.put("message", "获取省份城市列表失败: " + e.getMessage());
//        }
//
//        return result;
//    }
//
//    @GetMapping("/city/{cityCode}/districts")
//    public Map<String, Object> getCityDistricts(@PathVariable String cityCode) {
//        Map<String, Object> result = new HashMap<>();
//
//        try {
//            City city = cityMapper.selectByCode(cityCode);
//            if (city == null) {
//                result.put("success", false);
//                result.put("message", "城市不存在");
//                return result;
//            }
//
//            List<District> districts = districtMapper.selectByCityCode(cityCode);
//
//            result.put("success", true);
//            result.put("city", city);
//            result.put("districts", districts);
//            result.put("districtCount", districts.size());
//            result.put("message", String.format("城市[%s]下有%d个区县", city.getName(), districts.size()));
//
//        } catch (Exception e) {
//            log.error("获取城市区县列表失败", e);
//            result.put("success", false);
//            result.put("message", "获取城市区县列表失败: " + e.getMessage());
//        }
//
//        return result;
//    }
//}
